草庐IT

mysql GRANT + WHERE

全部标签

mysql - Select AS temp_name FROM table WHERE temp_name = something?

您知道如何在这样的SQL语句中将临时列名分配给返回值吗?SELECTsomething+this+thatASmyvalueFROMmytable是否可以使用临时名称myvalue作为条件?SELECTsomething+this+thatASmyvalueFROMmytableWHEREmyvalue=10我似乎无法弄清楚执行此操作的语法。我能弄清楚该怎么做的唯一方法是像这样再次重写整个列定义:SELECTsomething+this+thatASmyvalueFROMmytableWHEREsomething+this+that=10显然上面的例子是一个简单的例子。我需要执行此操作

MYSQL,WHERE/LIMIT/ORDERBY的组合

我有这个$sql='SELECT*FROMtb_eventWHEREDATE(edate)>=DATE(NOW())';$result=$conn->query($sql)ordie(mysqli_error());$news=$result->fetch_assoc();运行良好然而当我把它改成这个时$sql='SELECT*FROMtb_eventWHEREDATE(edate)>=DATE(NOW()LIMIT2)';我收到此错误消息Warning:mysqli_error()expectsexactly1parameter,0givenin/var/www/.../...php

mysql where 1= 0 混淆

在简单的sql书中,有部分代码提到如果我使用where1=0,我可以安全地添加一个OR条件,例如:WHERE1=0ORnameLIKE'%Toledo%'ORbilladdrLIKE'%Toledo%'ORshipaddrLIKE'%Toledo%'我不明白为什么当我使用where1=0时我可以安全地添加一个OR语句我可以只使用像下面这样的东西吗?WHERE1=1ORnameLIKE'%Toledo%'ORbilladdrLIKE'%Toledo%'ORshipaddrLIKE'%Toledo%'我理解where1=1是添加And语句的快捷方式。我明白,因为where1=1将返回tru

mysql - MySQL 查询中的 HAVING 和 WHERE 有什么区别?

我有一个基于某些表的连接的View(viewX):当我使用WHERE时,查询延迟,处理器使用率达到50%,最后我需要关闭mysqld.exe服务并重新启动来尝试解决又出问题了。当我使用HAVING时,查询可以完美快速地执行,我得到了结果,一切就绪。查询类似这样:SELECT*FROMviewXWHEREcolumn_of_view='foo'SELECT*FROMviewXHAVINGcolumn_of_view='foo'发生了什么事?我找到的解决方案是做这样的事情:SELECT*FROM(SELECT*FROMviewX)asTWHEREcolumn_of_view='foo'SE

mysql - WHERE 子句中的 MIN()

我需要在mySQL中使用MIN()编写一个简单的查询在WHERE子句,计算两个数字的最小值,其中一个是列值(可能为NULL值),另一个是固定数字,像这样>SELECT...WHERE...(len我知道我可以写类似的东西>SELECT...WHERE...((len但我更喜欢简单的东西,比如使用MIN()在WHERE条款。可能吗?如果是这样,哪个具有更好的性能? 最佳答案 要返回两个值中的较小者,请使用LEASTMySql中的函数。要处理空值,请使用IFNULL().WHERElen 关

mysql - WHERE 子句和 ON 子句中的条件

假设我有两个表,StudentTestIdNameTestIdTypeStudentId-------------------------1Mark774Hard12Sam774Hard23John775Easy3现在我必须在MySql中找到那些参加过“hard”类型测试的学生(学生ID、姓名和testid)。哪个更好(就性能而言)?1.Selectstudent.id,student.name,test.testidfromstudentjointestontest.studentid=student.idandtest.type='hard'2.Selectstudent.id,s

MySQL 查询 - 子句 `where (varchar)` 返回仅以数字开头的项目。为什么?

我有一个有趣的结果,但不明白为什么。SELECT*FROMitemsimWHEREItemNumberItemNumber是一个varchar(50)。此查询的结果返回ItemNumber以数字开头的所有项目。如果ItemNumber以字母开头,则将其排除。有人能解释为什么查询以这种方式交互吗? 最佳答案 这是MySQL的聪明策略,假设它知道你的意思(而不是照你写的做)。任何计算结果为非零的表达式都被认为是真的。那些以字母开头的项目不能(隐含地)转换为数字,因此它被认为是零,因此被认为是“假”。我认为具有(字符)值'0'的项目也被排

mysql ...in where 子句不明确

SELECTcat.CategoryIDasCategoryID,count(p.ProductID)asCountProductsFROMCategoryascatLEFTJOINProductsasponp.CategoryIDIN(SELECTCategoryIDFROMCategoryascdWHEREcd.ParrentCategoryID='876')WHERECategoryID='876'ORDERbyName我们得到错误-“Column'CategoryID'inwhereclauseisambiguous”。请告诉我怎么会是正确的? 最佳

MySQL:如何在同一个表上使用不同的 WHERE 条件来组合多个 SELECT 查询?

我一直在尝试许多不同的方法来从这个论坛和许多其他论坛中解决这个问题。我似乎找不到这个问题的解决方案或任何能给我直接答案的文档。我想知道你是否可以帮我看一下。谢谢问题:我有一个包含下表的数据库参与者分数联赛回合我目前能够显示单轮的分数,一次显示一轮……这正是我想要的。但我也想显示每个参与者在所有回合中获得的分数。假设我们有2轮。我希望结果屏幕上的输出看起来像这样:Currentlyviewingleague20,Round1of2:UserName|Score|TotalScoreTom|10|200James|50|300username-参与者的名字score=本轮得分总得分=本联赛

sql - 是否可以在单个查询中同时使用 order by 和 where

我已经创建了一个表。在一个字段中,我有该记录的优先级(在1-9之间)。我没有为所有记录设置优先级,所以对于某些记录,它将保持为空。当在我的HTML页面中显示这些记录时,我只是检查那些优先级——如果优先级存在,那么我将按原样显示,如果它为空,那么我将把它显示为最低优先级'10'(仅供展示)。排序表格时出现问题。如果我尝试对表进行排序(DESC),它会在第一行显示10,然后继续完美地显示(1,2,....)。如何解决?是否可以先显示优先级,然后再显示空值? 最佳答案 这是一个简短的示例,展示了如何将NULL转换为一个值,然后对其进行排序